/**
 * 环境配置封装
 */
const env: Environment = import.meta.env.MODE as Environment;

console.log("env", env);
// 定义环境配置对象
const EnvConfig: EnvConfig = {
  dev: {
    baseApi: import.meta.env.VITE_APP_BASE_API,
    mockApi:
      "https://gitee.com/oauth/authorize",
  },
  test: {
    baseApi: "//test.futurefe.com/api",
    mockApi:
      "https://www.fastmock.site/mock/c1c302e8baed9894c48c17e4738c092e/api",
  },
  prod: {
    baseApi: import.meta.env.VITE_APP_BASE_API,
    mockApi:
      "https://www.fastmock.site/mock/c1c302e8baed9894c48c17e4738c092e/api",
  },
};

// 导出配置，正确地合并环境变量和特定环境的配置

// 定义整个配置对象的类型
interface AppConfig {
  env: Environment;
  mock: boolean;
  namespace: string;
  baseApi?: string; // 可选，因为只有在合并时才会有值
  mockApi?: string; // 同上
}
// 实现配置对象
const appConfig: AppConfig = {
  env,
  mock: false,
  namespace: "manager",
  ...EnvConfig[env], // 由于env已被断言为正确的类型，这里不需要as keyof
};
export default appConfig;

// 首先，定义环境变量的类型
interface EnvConfigItem {
  baseApi: string;
  mockApi: string;
}

// 定义环境配置类型，这里直接关联环境名到相应的Env类型，而不是重复定义Env
type EnvConfig = {
  dev: EnvConfigItem;
  test: EnvConfigItem;
  prod: EnvConfigItem;
};
// env 的类型应该是 EnvConfig 的键类型，即 'dev' | 'test' | 'prod'
type Environment = keyof EnvConfig;
